#ifndef TURRET_H
#define TURRET_H
#include <queue>
#include <QObject>
#include <QPoint>
#include <QPixmap>
#include <set>
//#include <bits/stdc++.h>
class Enemy;
class MainWindow;
class Game;
class Turret
{
public:
    Turret();
    Turret(QPoint pos,int type,Game *game);   //pos位置，type类型
    ~Turret();
    bool check_enemy_range(Game *game);
    void chose_enemy();
    void setHp(int hurt);
    void attack();
    bool levelup(int id);      //0升级威力， 1升级范围  ，2 升级攻击频率   3，修理  成功return 1 失败 0
    void repair();
    QPoint getPos();
    void UpdateMap();
    void draw(QPainter *painter) const;
public:
    int maxHp;       //最大血量
    int currentHp;   //血量
    QPoint pos;      //中点坐标
    int type;        //炮塔类型
    double range;    //炮塔攻击范围
    double radius;   //炮塔所占面积半径
    int power;       //炮塔子弹威力
    int firerate;    //两次攻击时间间隔
    Enemy* current_enemy;     //当前攻击敌人
    std::set<Enemy*> enemy_set;    //攻击范围内敌人列表
    Game *game;
    QPixmap sprite;     //图片文件

    QTimer *timer; //发射子弹记时用的
    qreal rotationSprite;
    int atktime=0;

    //升等级用的变量
    int uplevel_power=1;
    int uplevel_range=1;
    int uplevel_firerate=1;


private slots:

protected:

};

#endif // TURRET_H
